package com.wang.io;

import org.junit.jupiter.api.Test;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * FileOutputStream：用于把内存数据(byte)写入磁盘文件，如果文件不存在，就自动创建后再写入，有【覆盖】和【追加】两种模式，指针记录上次写入的末尾位置。
 */
public class TestFileOutputStream {

    /**
     * 构造方法：
     *   1. new FileOutputStream(File file)：覆盖模式(指针起初指向文件内容的起始位置)
     *   2. new FileOutputStream(File file, boolean append)：追加模式(指针起初指向文件内容的末尾)
     *   3. new FileOutputStream(String path)
     *   4. new FileOutputStream(String path, boolean append)
     * 写入磁盘文件：
     *   1. write(int byte)：写入一个字节
     *   2. write(byte[] bytes)：批量写入
     *   3. write(byte[] bytes, int off, int len)：部分写入，off：偏移量，len：写入长度。
     * 保存磁盘文件：
     *   1. flush()
     *   2. close()
     */
    @Test
    public void test01() {
        String filePath = "e:\\a.txt";
        FileOutputStream fileOutputStream = null;

        try {
            fileOutputStream = new FileOutputStream(filePath, true);  // 追加模式
            fileOutputStream.write("hello".getBytes());
            fileOutputStream.write(",张三".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
